package ink.tiptop.learn.mapper.test;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ink.tiptop.learn.pojo.po.test.TestUserBaseInfoPO;
import org.apache.ibatis.annotations.Mapper;

/**
 * @author zjf
 * @date 2020-08-16 14:54
 * 强大的条件构造器2
 */
@Mapper
public interface A_QueryWrapperMapper extends BaseMapper<TestUserBaseInfoPO> {


    /**
     * QueryWrapper
     * 说明:
     * 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
     * 及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取
     */
    default void queryWrapper() {

    }

    /**
     * QueryWrapper使用方式1
     * <p>
     * select(String... sqlSelect)
     * select(Predicate<TableFieldInfo> predicate)
     * select(Class<T> entityClass, Predicate<TableFieldInfo> predicate)
     * <p>
     * 设置查询字段
     * <p>
     * 说明:
     * 以上方法分为两类.
     * 第二类方法为:过滤查询字段(主键除外),入参不包含 class 的调用前需要wrapper内的entity属性有值! 这两类方法重复调用以最后一次为准
     */
    default void queryWrapper_1() {
        QueryWrapper<TestUserBaseInfoPO> wrapper = new QueryWrapper<>();
        // 1.输出SQL: id = 1 and name = '老王' and age is null
        // 例: select("id", "name", "age")
        //例: select(i -> i.getProperty().startsWith("test"))
        wrapper.select("id", "name", "age");
        wrapper.select(i -> i.getProperty().startsWith("test"));
    }


}
